# Para replicar, altere o caminho para o diret?rio em que o banco de dados se encontra
setwd("../Questao1Denise/")


# Instala os pacotes necess?rios faltantes
packages <- c("readxl", "tidyverse", "hrbrthemes", "viridis")
for (pkg in packages) {
  if (!require(pkg, character.only = TRUE)) {
    install.packages(pkg)
    library(pkg, character.only = TRUE)
  }
}


dadosDenise <- read_excel("DadosExcelConfianca.xlsx")


# binarios para as regressoes
dadosDenise$binario_GestaoTemer      <- ifelse(dadosDenise$`Tempo SNAS` == 'Gestão Temer',  1, 0)
dadosDenise$binario_GestaoDilma      <- ifelse(dadosDenise$`Tempo SNAS` == 'Gestão Dilma',  1, 0)
dadosDenise$binario_GestaoPermanente <- ifelse(dadosDenise$`Tempo SNAS` == 'Permanente',    1, 0)
dadosDenise$binario_formacao1        <- ifelse(dadosDenise$Formação     == 'Serviço Social',1, 0)
dadosDenise$binario_formacao2        <- ifelse(dadosDenise$Formação2    == "Ciência/Serviço Social",1, 0)
dadosDenise$binario_experienciaMun   <- ifelse(dadosDenise$EXPERIENCIA_ASSISTENCIA == "Estados/Municípios", 1, 0)
## Transforma os dados para bin?rios de acordo com a coluna da tabela


#### INTERVALOS DE CONFIAN?A
########################################################
########################################################
# func que dado o fit, me retorna o gráfico de Intervalo de Confiança
plot_intervalo_confianca_TempoSNAS <- function (fit, tipo_fit, nomeGrafico) {
  ## Gera intervalo de confian?a para diferentes tipos de ajuste (TempoSNAS, Formacao1, Formacao2, Experiencia)
  if (tipo_fit == "TempoSNAS"){
    conf_interval <- as.data.frame(predict(fit, newdata=data.frame(binario_GestaoTemer=c(0,0,1), binario_GestaoDilma=c(0,1,0)), interval="confidence",
                                           level = 0.90))
    grupos <- c("Permanente", "Gestão Dilma", "Gestão Temer")
  }
  else if (tipo_fit == "Formacao1"){
    conf_interval <- as.data.frame(predict(fit, newdata=data.frame(binario_formacao1=c(0,1)), interval="confidence",
                                           level = 0.90))
    grupos <- c("Outros", "Serviço Social")
  }
  else if (tipo_fit == "Formacao2"){
    conf_interval <- as.data.frame(predict(fit, newdata=data.frame(binario_formacao2=c(0,1)), interval="confidence",
                                           level = 0.90))
    grupos <- c("Outros", "Ciência/Serviço Social")
  }
  else if (tipo_fit == "Experiencia"){
    conf_interval <- as.data.frame(predict(fit, newdata=data.frame(binario_experienciaMun=c(0,1)), interval="confidence",
                                           level = 0.90))
    grupos <- c("Apenas Federal", "Estados/Municípios")
  }
  else {
    print ("ERRO! TIPO DESCONHECIDO")
    return -1
  }
  ## Ajuste dos limites do intervalo de confian?a
  
  # Limita o valor superior em 5, pois a m?dia real n?o pode ser maior que 5 (m?ximo da vari?vel)
  conf_interval$upr <- ifelse(conf_interval$upr>5, 5, conf_interval$upr)
  
  # Limita o valor inferior em 1, pois a m?dia real n?o pode ser menor que 1 (m?nimo da vari?vel)
  conf_interval$lwr <- ifelse(conf_interval$lwr<1, 1, conf_interval$lwr)
  
  # Nomes das variaveis
  colnames(conf_interval) <- c("Media", "Min", "Max")
  
  # adicionando a variavel "grupo" com os nomes das colunas e depende do tipo de grafico
  conf_interval$Grupo <- grupos
  
  ggplot(conf_interval, aes(x=Grupo, y=Media, group=Grupo, color=Grupo)) + 
    
    # ponto, range e traço em cada grupo
    geom_errorbar(aes(ymin=Min, ymax=Max), width = 0.2) + 
    geom_pointrange(aes(ymin=Min, ymax=Max)) + 
    
    # limpa o background
    theme_ipsum() + theme(
      axis.ticks = element_blank(),
      panel.grid.major.x = element_blank(),
      panel.grid.minor.x = element_blank())+
    
    # 
    ylim(1,5) +
    xlab("") + ylab("")
  
  ggsave(nomeGrafico, width = 10)
}


plot_intervalo_confianca_TempoSNAS(lm(Questionario_1 ~ 1 + binario_GestaoTemer + binario_GestaoDilma, data=dadosDenise), "TempoSNAS", "Confianca_Por_TempoSNAS_Q1.png")


plot_intervalo_confianca_TempoSNAS(lm(Questionario_1 ~ 1 + binario_formacao1, data=dadosDenise), "Formacao1", "Confianca_Por_Formacao1_Q1.png")

